/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reclamos;

import com.csvreader.CsvReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author 3621154
 */
public class Leercsvvuelos  {
    int aux=0;
    
    
    public Leercsvvuelos(String ruta) throws IOException{
        conexion con2 = new conexion();
        String Numero_expediente;
        String Secuencia_vuelo;
        String Linea_aerea_vuelo;
        String numero_vuelo;
        String fecha_vuelo;
        String fecha_vuelo_nueva ="";
        String Linea_Aerea;
        String Estacion;
        String Tipo_Expediente;
        String Tipo_Codigo;
        int contador = 0 ;
        
        try {                       
            CsvReader vuelos = new CsvReader(ruta);
            vuelos.readHeaders();
            while(vuelos.readRecord()){
                Linea_Aerea= vuelos.get("Linea_Aerea");
                if(Linea_Aerea.length() == 0){ Linea_Aerea="NULL"; contador++;}
                Estacion=vuelos.get("Estacion");
                if(Estacion.length() == 0){ Estacion="NULL"; contador++;}
                Tipo_Expediente = vuelos.get("Tipo_Expediente");
                if(Tipo_Expediente.length() == 0){ Tipo_Expediente="NULL"; contador++;}
                Numero_expediente=vuelos.get("Numero_expediente");
                if(Numero_expediente.length() == 0){ Numero_expediente="NULL"; contador++;}
                Secuencia_vuelo=vuelos.get("Secuencia_vuelo");
                if(Secuencia_vuelo.length() == 0) { Secuencia_vuelo="NULL"; contador ++;}
                Linea_aerea_vuelo=vuelos.get("Linea_aerea_vuelo");
                if(Linea_aerea_vuelo.length() == 0) { Linea_aerea_vuelo="NULL"; contador ++;}
               
                Tipo_Codigo = vuelos.get("Tipo_Codigo");
                if(Tipo_Codigo.length() == 0) { Tipo_Codigo="NULL"; contador ++;}
                numero_vuelo=vuelos.get("numero_vuelo");
                if(numero_vuelo.length() == 0) { numero_vuelo="NULL"; contador ++;}
                
                fecha_vuelo = vuelos.get("fecha_vuelo");
                fecha_vuelo_nueva=cambiar_fecha(fecha_vuelo);
                if(fecha_vuelo.length()>0){
                 fecha_vuelo_nueva = cambiar_fecha(fecha_vuelo);/**cambiar_fecha(fecha_vuelo);**/}
                if(fecha_vuelo_nueva==null){ fecha_vuelo_nueva="NULL"; contador++;}
                //int pruebavuelo=0;
                //pruebavuelo=Integer.parseInt(fecha_vuelo.substring(7,9));
                //(!"07".equals(fecha_vuelo.substring(7,9)) && !"08".equals(fecha_vuelo.substring(7,9)) && !"09".equals(fecha_vuelo.substring(7,9)) && !"10".equals(fecha_vuelo.substring(7,9)) && !"11".equals(fecha_vuelo.substring(7,9))){
                try{
                if(!fecha_vuelo_nueva.equals("NULL")){
                    if(Integer.parseInt(fecha_vuelo_nueva.substring(0,4)) >= 2011){
                         con2.insertarvuelos(Secuencia_vuelo,Linea_Aerea,Numero_expediente,fecha_vuelo_nueva,numero_vuelo,Integer.toString(contador),Linea_aerea_vuelo,Tipo_Expediente,Estacion);
                    }                
                }} catch (StringIndexOutOfBoundsException sioobe) {sioobe.getMessage();}
                if(fecha_vuelo_nueva.equals("NULL")){
                con2.insertarvuelos(Secuencia_vuelo,Linea_Aerea,Numero_expediente,fecha_vuelo_nueva,numero_vuelo,Integer.toString(contador),Linea_aerea_vuelo,Tipo_Expediente,Estacion);    
                }
                //}
                contador=0;
            }
            try {
                con2.conexion.close();
            } catch (SQLException ex) {
                Logger.getLogger(Leercsvvuelos.class.getName()).log(Level.SEVERE, null, ex);
            }
            vuelos.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Leercsvvuelos.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    public int getSize() {
        return aux;
    }
    
    public String dateFormatter(String formatToParse) {

		String format = "";

		SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
		SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");	
                SimpleDateFormat format3 = new SimpleDateFormat("dd-MMM-yy");

		SimpleDateFormat finalFormat = new SimpleDateFormat("yyyy-MM-dd");

		Date parser;

		try {
			parser = format1.parse(formatToParse);
			format = finalFormat.format(parser);
			}
		catch(ParseException e1) {
			
				try {
					parser = format2.parse(formatToParse);
					format = finalFormat.format(parser);
					}
				catch(ParseException e2) {
					
					try {
                                            parser = format3.parse(formatToParse);
                                            format = finalFormat.format(parser);
                                        }
                                        catch(ParseException e3) {
                                            System.err.println("Error: La fecha entregada no es valida para procesarse.");
                                            e2.printStackTrace();
                                        }
					}
				}

		return format;
	}
    
    private String cambiar_fecha(String fecha) 
        {
            String estado=null;
            String fechanueva=null;
            String dia1=null;
            String mes1=null;
            String anio1=null;
   
        try{
        if(fecha.length() == 9){
        dia1=fecha.substring(0,2);
        mes1=fecha.substring(3,6);
        anio1=fecha.substring(7,9);
        
        switch(mes1){
	case "JAN": mes1="01";
			break;
	case "FEB": mes1="02";
			break;
	case "MAR": mes1="03";
			break;
	case "APR": mes1="04";
			break;
	case "MAY": mes1="05";
			break;
	case "JUN": mes1="06";
			break;
	case "JUL": mes1="07";
			break;
	case "AUG": mes1="08";
			break;
	case "SEP": mes1="09";
			break;
	case "OCT": mes1="10";
			break;
	case "NOV": mes1="11";
			break;
	case "DEC": mes1="12";
			break;
    }
          
    fechanueva="20"+ anio1 + "-" + mes1 + "-" + dia1;

    if("null-null-null".equals(fechanueva)){
	fechanueva=null;
    }
    } 
        
    if(fecha.length() == 8)
    {
        dia1=fecha.substring(0,2);
        mes1=fecha.substring(3,5);
        anio1=fecha.substring(6,8);
        
                  
    fechanueva="20"+ anio1 + "-" + mes1 + "-" + dia1;

    if("null-null-null".equals(fechanueva)){
	fechanueva=null;
    }
    
    }
        
        
    
        } catch (StringIndexOutOfBoundsException ex) { estado=ex.getMessage(); }
       
       
       return fechanueva;}
}
